/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamankelompokrka;

import java.util.ArrayList;
import java.util.List;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.sadhar.sipp.perekamankelompokkegiatan.PerekamanKelompokKegiatan;
import org.sadhar.sipp.perekamankelompokkegiatan.PerekamanKelompokKegiatanDAO;
import org.sadhar.sipp.perekamankelompokkegiatan.PerekamanKelompokKegiatanDAOImpl;
import org.sadhar.sipp.posbiaya.PosBiaya;
import org.sadhar.sipp.posbiaya.PosBiayaDAO;
import org.sadhar.sipp.posbiaya.PosBiayaDAOImpl;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;

/**
 *
 * @author hendro
 */
public class PerekamanKelompokRKAWnd extends ClassApplicationModule {

    private Button btnSimpan;
    private Button btnBatal;
    private Listbox lstboxPerekamanKelompokRKA1;
    private Listbox lstboxPerekamanKelompokRKA2;
    private PerekamanKelompokRKADAO rkaDAO;
    private PerekamanKelompokKegiatanDAO kegiatanDAO;
    private PosBiayaDAO posBiayaDAO;
    private List<PerekamanKelompokRKA> data = new ArrayList<PerekamanKelompokRKA>();

    public PerekamanKelompokRKAWnd() {
        this.rkaDAO = new PerekamanKelompokRKADAOImpl();
        this.kegiatanDAO = new PerekamanKelompokKegiatanDAOImpl();
        this.posBiayaDAO = new PosBiayaDAOImpl();
    }

    public void onCreate() throws Exception {
        lstboxPerekamanKelompokRKA1 = (Listbox) getFellow("lstboxPerekamanKelompokRKA1");
        btnSimpan = (Button) getFellow("btnSimpan");
        btnBatal = (Button) getFellow("btnBatal");
        lstboxPerekamanKelompokRKA2 = (Listbox) getFellow("lstboxPerekamanKelompokRKA2");

        load();
    }

    public void load() throws Exception {
        lstboxPerekamanKelompokRKA1Load();
        lstboxPerekamanKelompokRKA2Load();
    }
    private int oldKodePosBiaya;

    public void lstboxPerekamanKelompokRKA2Load() throws Exception {
        oldKodePosBiaya = 10000;
        lstboxPerekamanKelompokRKA2.getItems().clear();
        for (PerekamanKelompokRKA rka : rkaDAO.list()) {
            Listitem item = new Listitem();
            item.setValue(rka);
            if (oldKodePosBiaya == rka.getKodePosBiaya()) {
                item.appendChild(new Listcell(""));
            } else {
                item.appendChild(new Listcell(posBiayaDAO.select(rka.getKodePosBiaya()).getNamaPosBiaya()));
                oldKodePosBiaya = rka.getKodePosBiaya();
            }
            item.appendChild(new Listcell(kegiatanDAO.select(rka.getKodeKelompokKegiatan()).getKelompokKegiatan()));
            lstboxPerekamanKelompokRKA2.appendChild(item);
        }
    }

    public void lstboxPerekamanKelompokRKA1Load() throws Exception {
        int no = 1;
        int i = 0;
        lstboxPerekamanKelompokRKA1.getItems().clear();
        for (final PerekamanKelompokKegiatan kegiatan : kegiatanDAO.list()) {
            Listitem item = new Listitem();
            item.appendChild(new Listcell(String.valueOf(no++)));
            item.appendChild(new Listcell(kegiatan.getKelompokKegiatan()));
            Listcell cellCombo = new Listcell();
            final Combobox cmbbox = new Combobox();
            cmbbox.setId("cmbbox" + kegiatan.getKodeKelompok());
            cmbbox.addEventListener("onChange", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    PosBiaya biaya = (PosBiaya) cmbbox.getSelectedItem().getValue();
                    PerekamanKelompokRKA rka = new PerekamanKelompokRKA(biaya.getKodePosBiaya(), kegiatan.getKodeKelompok());
                    data.add(rka);
                }
            });
            for (final PosBiaya biaya : posBiayaDAO.list(7, 8)) {
                Comboitem cmbItem = new Comboitem();
                cmbItem.setId("cmbBox" + kegiatan.getKelompokKegiatan() + biaya.getKodePosBiaya());
                cmbItem.setValue(biaya);
                PerekamanKelompokRKA rka = new PerekamanKelompokRKA(biaya.getKodePosBiaya(), kegiatan.getKodeKelompok());
                cmbItem.setLabel(biaya.getNamaPosBiaya());
                cmbbox.appendChild(cmbItem);
            }
            if (rkaDAO.list(kegiatan.getKodeKelompok()).size() <= 0) {
                cellCombo.appendChild(cmbbox);
                item.appendChild(cellCombo);
            }else{
                PerekamanKelompokRKA rka = rkaDAO.select(kegiatan.getKodeKelompok());
                item.appendChild(new Listcell(posBiayaDAO.select(rka.getKodePosBiaya()).getNamaPosBiaya()));
            }
            lstboxPerekamanKelompokRKA1.appendChild(item);
        }
    }

    public void btnSimpanOnClick() throws Exception {
        for (PerekamanKelompokRKA rka : data) {
            rkaDAO.insert(rka);
        }
        data.clear();
        load();
    }

    public void btnBatalOnClick() throws Exception {
        data.clear();
        load();
    }
}
